/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-09-10 17:32:54
 * @LastEditTime: 2019-09-17 11:30:23
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let TS = NativeModules.JSTextStyle;

/**
 * @class TextStyle
 * @description  文本样式
 */
export default class TextStyle {
  /**
   * 构造一个新的TextStyle对象，可通过无参或有参构造。
   * 有参构造的参数为：文本颜色（String, eg:'rgba(128, 128, 128, 128)'）、文本大小（float类型的Number）
   *
   * @memberof TextStyle
   * @returns {Promise<TextStyle>}
   */
  async createObj() {
    try {
      if (
        typeof arguments[0] === 'string' &&
        typeof arguments[1] === 'number'
      ) {
        let { TextStyleId } = await TS.createObjByCS(
          arguments[0],
          arguments[1]
        );

        let textStyle = new TextStyle();
        textStyle._MGTextStyleId = TextStyleId;
        return textStyle;
      } else {
        let { TextStyleId } = await TS.createObj();
        let textStyle = new TextStyle();

        textStyle._MGTextStyleId = TextStyleId;
        return textStyle;
      }
    } catch (e) {
      console.error(e);
    }
  }

  // /**
  //  * 通过文本颜色、大小构造一个新的TextStyle对象
  //  *
  //  * @memberof TextStyle
  //  * @param {Number} color 文本颜色（int类型的Number）
  //  * @param {Number} size  文本大小（float类型的Number）
  //  * @returns {Promise<TextStyle>}
  //  */
  // async createObjByCS(color, size){
  //     try {
  //         var {TextStyleId} = await TS.createObjByCS(color, size);
  //         var textStyle = new TextStyle();
  //         textStyle._MGTextStyleId = TextStyleId;
  //         return textStyle;
  //     } catch (e) {
  //         console.error(e);
  //     }
  // }

  /**
   * 获取颜色
   *
   * @memberof TextStyle
   * @returns {String} 颜色 
   */
  async getColor() {
    try {
      let color = await TS.getColor(this._MGTextStyleId);
      return color;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * @memberof TextStyle
   * @param {String} color 颜色 eg:'rgba(128, 128, 128, 128)'
   * @returns {Promise<Void>}
   */
  async setColor(color) {
    try {
      await TS.setColor(this._MGTextStyleId, color);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取文本的大小
   *
   * @memberof TextStyle
   * @returns {Number} 文本大小（单位：dp，float类型的Number）
   */
  async getSize() {
    try {
      let size = await TS.getSize(this._MGTextStyleId);
      return size;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置文本的大小
   *
   * @memberof TextStyle
   * @param {Number} size 文本大小（单位：dp，float类型的Number）
   * @returns {Promise<Void>}
   */
  async setSize(size) {
    try {
      await TS.setSize(this._MGTextStyleId, size);
    } catch (e) {
      console.error(e);
    }
  }
}
